package define

// MenuReply 返回前端的每一个菜单栏数据
type MenuReply struct {
	Identity       string       `json:"identity"`
	ParentIdentity string       `json:"parent_identity"`
	Name           string       `json:"name"`
	WebIcon        string       `json:"web_icon"`
	Sort           int          `json:"sort"`
	Path           string       `json:"path"`
	Level          int          `json:"level"` // 菜单等级，{0：目录，1：菜单，2：按钮}
	SubMenus       []*MenuReply `json:"sub_menus"`
	Crud           uint         `json:"crud"`
}

// RoleMenu role_menu表联合menu_basic表查询过程使用的结构
type RoleMenu struct {
	Id       int    `json:"id"`
	ParentId int    `json:"parent_id"`
	Identity string `json:"identity"`
	Name     string `json:"name"`
	WebIcon  string `json:"web_icon"`
	Sort     int    `json:"sort"`
	Path     string `json:"path"`
	Level    int    `json:"level"`
	Crud     uint   `json:"crud"`
}

// ParamMenuAdd 添加菜单的结构
type ParamMenuAdd struct {
	ParentIdentity string `json:"parent_identity"`         // 父级唯一标识，不填默认为顶级菜单
	Name           string `json:"name" binding:"required"` // 菜单名称
	WebIcon        string `json:"web_icon"`                // 网页图标
	Path           string `json:"path" binding:"required"` // 路径
	Sort           int    `json:"sort"`                    // 排序
	Level          int    `json:"level"`                   // 菜单等级，{0：目录，1：菜单，2：按钮}
}

// ParamMenuUpdate 菜单更新结构
type ParamMenuUpdate struct {
	ParamMenuAdd
	Identity string `json:"identity" binding:"required"` // 菜单唯一标识
}
